//
//  NSObject+LXModelExtension.h
//  LXModelExtensionExample
//
//  Created by imera on 16/5/16.
//  Copyright © 2016年 LX. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <objc/runtime.h>

@interface NSObject (LXModelExtension)

/**
 *  通过字典创建一个模型对象
 *
 *  @param dict 字典
 *
 *  @return 新建的对象
 */
+ (instancetype)lx_setWithDict:(NSDictionary *)dict;

/**
 *  通过字典创建一个模型对象
 *
 *  @param dict 字典
 *
 *  @return 新建的对象
 */
- (instancetype)lx_setWithDict:(NSDictionary *)dict;

/**
 *  模型转字典
 *
 *  @return 字典
 */
- (NSDictionary *)lx_dict;

/**
 *  字典数组转模型数组
 *
 *  @return 模型数组
 */
+ (NSArray *)lx_objectsArrayWithDictArray:(NSArray *)arr;

/**
 *  字典转模型,字典和模型属性值不同，key值映射
 *  例如ID->id,map = @{@"id": @"ID"},ID为模型属性变量，id为字典key值
 *
 *  @param dict 字典
 *  @param map  key值映射字典
 *
 *  @return 新建模型对象
 */
+ (instancetype)lx_objectWithMap:(NSDictionary *)dict map:(NSDictionary *)map;

/**
 *  字典转模型,字典和模型属性值不同，key值映射
 *  例如ID->id,map = @{@"ID": @"id"},ID为模型属性变量，id为字典key值
 *
 *  @param dict 字典
 *  @param map  key值映射字典
 *
 *  @return 新建模型对象
 */
- (instancetype)lx_objectWithMap:(NSDictionary *)dict map:(NSDictionary *)map;


@end
